﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace swaganomics.Backend
{
    public class DataFormats
    {
        public class ServerResponse
        {
            public class Response
            {
                public bool HasSwag { get; set; }
                public Int64 Magic { get; set; }
                public string Security { get; set; }

                public Content Content { get; set; }
            }
            public class Content
            {
                public string TotalTaxPaid { get; set; }
                public FundingDestination FundingDestination { get; set; }
                public ActualDestinationAmmounts ActualDestinationAmmounts { get; set; }
                public SuperTaxedItems SuperTaxedItems { get; set; }
                public TimeZoneSlot VATExpendature { get; set; }
            }

            public class FundingDestination
            {
                public HealthCare HealthCare { get; set; }
                public Enviroment Enviroment { get; set; }
                public HelpingOthers HelpingOthers { get; set; }
                public SocialSystems SocialSystems { get; set; }
                public Education Education { get; set; }
                public OrderAndSafety OrderAndSafety { get; set; }
                public Defence Defence { get; set; }
                public Culture Culture { get; set; }
                public RunningGovernment RunningGovernment { get; set; }
                public OurStreets OurStreets { get; set; }
            }
            public class ActualDestinationAmmounts
            {
                public HealthCare HealthCare { get; set; }
                public Enviroment Enviroment { get; set; }
                public HelpingOthers HelpingOthers { get; set; }
                public SocialSystems SocialSystems { get; set; }
                public Education Education { get; set; }
                public OrderAndSafety OrderAndSafety { get; set; }
                public Defence Defence { get; set; }
                public Culture Culture { get; set; }
                public RunningGovernment RunningGovernment { get; set; }
                public OurStreets OurStreets { get; set; }
            }

            public class HealthCare
            {
                public double Total { get; set; }
                public HealthCareBreakdown Breakdown { get; set; } 
            }
            public class HealthCareBreakdown
            {
                public double MedicalSupplies { get; set; }
                public double PublicHealth { get; set; }
                public double HealthResearch { get; set; }
            }
            public class Enviroment
            {
                public double Total { get; set; }
                public EnviromentBreakdown Breakdown { get; set; }
            }
            public class EnviromentBreakdown
            {
                public double Waste { get; set; }
                public double EnviromentalProtectionAdministrator { get; set; }
                public double ResearchIntoEnviromentalProtection { get; set; }
                public double EnviromentalProtection { get; set; }
                public double Polution { get; set; }
                public double WasteWaterManagement { get; set; }

            }
            public class HelpingOthers
            {
                public double Total { get; set; }
                public HelpingOthersBreakdown Breakdown { get; set; }
            }
            public class HelpingOthersBreakdown
            {
                public double OldAge { get; set; }
                public double SicknessAndDisability { get; set; }
                public double SociallyExcluded { get; set; }
                public double FamilyAndChildren { get; set; }
                public double TheUnemployed { get; set; }
                public double HelpingOthersAdmin { get; set; }
                public double Survivors { get; set; }
                public double Housing { get; set; }

            }
            public class SocialSystems
            {
                public double Total { get; set; }
                public SocialSystemsBreakdown Breakdown { get; set; }
            }
            public class SocialSystemsBreakdown
            {
                public double Transport { get; set; }
                public double GeneralEcnomic { get; set; }
                public double FarmingForestsFish { get; set; }
                public double ResearchIntoInfoStructure { get; set; }
                public double Finance { get; set; }
                public double Communication { get; set; }
                public double Energy { get; set; }
                public double OtherIndustries { get; set; }
                public double MiningManufacturingConstruction { get; set; }

            }
            public class Education
            {
                public double Total { get; set; }
                public EducationBreakdown Breakdown { get; set; }
            }
            public class EducationBreakdown
            {
                public double SecondaryAndFurther { get; set; }
                public double University { get; set; }
                public double EducationAdmin { get; set; }
                public double ExtraEducationServices { get; set; }
                public double PreSchoolAndPrimary { get; set; }
                public double MiscEducation { get; set; }
                public double EducationResearch { get; set; }
                public double PostSecondary { get; set; }

            }
            public class OrderAndSafety
            {
                public double Total { get; set; }
                public OrderAndSafetyBreakdown Breakdown { get; set; }
            }
            public class OrderAndSafetyBreakdown
            {
                public double TheCourts { get; set; }
                public double Prisons { get; set; }
                public double Police { get; set; }
                public double OrderAndSafetyAdmin { get; set; }
                public double FireBrigade { get; set; }
                public double ResearchIntoOrderAndSafety { get; set; }

            }
            public class Defence
            {
                public double Total { get; set; }
                public DefenceBreakdown Breakdown { get; set; }
            }
            public class DefenceBreakdown
            {
                public double Military { get; set; }
                public double DefenceAdmin { get; set; }
                public double ResearchAndDevelopment { get; set; }
                public double CivilianDefence { get; set; }
            }
            public class Culture
            {
                public double Total { get; set; }
                public CultureBreakdown Breakdown { get; set; }
            }
            public class CultureBreakdown
            {
                public double Media { get; set; }
                public double Culture { get; set; }
                public double SportAndRecreation { get; set; }
                public double CultureResearch { get; set; }
                public double CultureAdmin { get; set; }
                public double Religion { get; set; }
            }
            public class RunningGovernment
            {
                public double Total { get; set; }
                public RunningGovernmentBreakdown Breakdown { get; set; }
            }
            public class RunningGovernmentBreakdown
            {
                public double PublicDebtManagement { get; set; }
                public double TopLevelGovernment { get; set; }
                public double OverseasEcnomicAid { get; set; }
                public double MiscServices { get; set; }
                public double EuropeanUnion { get; set; }
                public double PublicServicesAdmin { get; set; }
                public double Research { get; set; }
                public double ResearchIntoRunningGovernment { get; set; }
            }
            public class OurStreets
            {
                public double Total { get; set; }
                public OurStreetsBreakdown Breakdown { get; set; }
            }
            public class OurStreetsBreakdown
            {
                public double Housing { get; set; }
                public double Water { get; set; }
                public double Community { get; set; }
                public double CommunityAdmin { get; set; }
                public double StreetLights { get; set; }
                public double ResearchIntoCommunity { get; set; }
            }

            public class SuperTaxedItems
            {
                public TimeZoneSlot Fuel { get; set; }
                public TimeZoneSlot Cigarettes { get; set; }
                public TimeZoneSlot AlcoholBeer { get; set; }
                public TimeZoneSlot AlcoholSprits { get; set; }
            }
            public class TimeZoneSlot
            {
                public double PerWeek { get; set; }
                public double PerMonth { get; set; }
                public double PerYear { get; set; }
            }

            public class ErrorFormat
            {
                public string Error_Has_Swag { get; set; }
                public string Error_Name { get; set; }
                public string Error_Desc { get; set; }
            }
        }

        public class ServerInput
        {
            public class Input
            {
                public string Action { get; set; }
                public Content Content { get; set; }
            }
            public class Content
            {
                public double YearlyIncome { get; set; }
                public int Age { get; set; }
                public int Gender { get; set; }
                public double PacksOfCigarettes { get; set; }
                public double LitresOfFuel { get; set; }
                public double LitresOfSprits { get; set; }
                public double PintsOfBeer { get; set; }
                public double MonthlyVATExpendature { get; set; }
            }
        }
    }
}